@苏苏
3年前 提问
1个回答

防火墙多久断开tcp连接

X0_0X
3年前

在防火墙没有数据连接的情况下在五秒左右会自动将TCP连接断开,有长连接的情况下则不会断开,如不想让防火墙TCP连接自动断开可以设置TCP长连接心跳机制或者设置socket的keepalive为true,这样即使没有数据,tcp/ip的底层也会保持连接。

设置TCP长连接心跳机制方法是直接修改套接字选项,配置文件如下:

    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
    client.setsockopt(socket.SOL_TCP, socket.TCP_KEEPIDLE, 600)  # 覆盖tcp_keepalive_time 表示多久时间未通信后进行探测
    client.setsockopt(socket.SOL_TCP, socket.TCP_KEEPCNT, 10)  # 覆盖tcp_keepalive_probes 探测次数
    client.setsockopt(socket.SOL_TCP, socket.TCP_KEEPINTVL, 30)  # 覆盖tcp_keepalive_intvl 每次探测的超时时间
    client.connect((host, port))